<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>1576. 替换所有的问号</title>
  </head>
  <body>
    <script>
      // 给你一个仅包含小写英文字母和 '?' 字符的字符串 s，请你将所有的 '?' 转换为若干小写字母，使最终的字符串不包含任何 连续重复 的字符。

      // 注意：你 不能 修改非 '?' 字符。

      // 题目测试用例保证 除 '?' 字符 之外，不存在连续重复的字符。

      // 在完成所有转换（可能无需转换）后返回最终的字符串。如果有多个解决方案，请返回其中任何一个。可以证明，在给定的约束条件下，答案总是存在的。

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode-cn.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      // ----------------------

      var modifyString = function (s) {
        const n = s.length
        const arr = [...s]
        for (let i = 0; i < n; ++i) {
          if (arr[i] === '?') {
            for (let j = 0; j < 3; ++j) {
              if ((i > 0 && arr[i - 1] === String.fromCharCode('a'.charCodeAt() + j)) || (i < n - 1 && arr[i + 1] === String.fromCharCode('a'.charCodeAt() + j))) {
                continue
              }
              arr[i] = String.fromCharCode('a'.charCodeAt() + j)
              break
            }
          }
        }
        return arr.join('')
      }
    </script>
  </body>
</html>
